﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.ComponentModel;

namespace RobotGerchik.DataClass.BaseTransaqCalss
{
    /// <summary>
    /// Данные по получаемым свечам
    /// </summary>
    public class Candles : INotifyPropertyChanged
    {
        #region Private

        private int _secid;
        private int _period;
        private int _status;
        private string _board;
        private string _seccode;
        private ObservableCollection<Candle> _candle;

        #endregion

        #region Public

        /// <summary>
        /// Идентификатор бумаги
        /// </summary>
        public int Secid
        {
            get { return _secid; }
            set
            {
                if (_secid != value)
                {
                    _secid = value;
                    RaisePropertyChanged("Secid");
                }
            }
        }

        /// <summary>
        /// Идентификатор периода"
        /// </summary>
        public int Period
        {
            get { return _period; }
            set
            {
                if (_period != value)
                {
                    _period = value;
                    RaisePropertyChanged("Period");
                }
            }
        }

        /// <summary>
        /// Параметр "status" показывает, осталась ли еще история Возможные значения:
        /// 0 - данных больше нет (дочерпали до дна)
        /// 1 - заказанное количество выдано (если надо еще - делать еще запрос)
        /// 2 - продолжение следует (будет еще порция)
        /// 3 - требуемые данные недоступны (есть смысл попробовать запросить позже).
        /// </summary>
        public int Status
        {
            get { return _status; }
            set
            {
                if (_status != value)
                {
                    _status = value;
                    RaisePropertyChanged("Status");
                }
            }
        }

        /// <summary>
        /// идентификатор режима торгов
        /// </summary>
        public string Board
        {
            get { return _board; }
            set
            {
                if (_board != value)
                {
                    _board = value;
                    RaisePropertyChanged("Board");
                }
            }
        }

        /// <summary>
        /// код инструмента
        /// </summary>
        public string Seccode
        {
            get { return _seccode; }
            set
            {
                if (_seccode != value)
                {
                    _seccode = value;
                    RaisePropertyChanged("Seccode");
                }
            }
        }

        /// <summary>
        /// Информация по свечам
        /// </summary>
        public ObservableCollection<Candle> Candle
        {
            get { return _candle; }
            set
            {
                if (_candle != value)
                {
                    _candle = value;
                    RaisePropertyChanged("Candle");
                }
            }
        }

        #endregion

        #region event PropertyChangedEventHandler

        public event PropertyChangedEventHandler PropertyChanged;

        protected void RaisePropertyChanged(string propertyName)
        {
            var handler = PropertyChanged;
            if (handler != null)
            {
                handler(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        #endregion
    }
}
